解决方案
-
为每个
销售代表
对应的
区域
以及相关的
客户
创建一个表格,这次仅针对
Midwest
区域。最终表格应该包含三列:区域
名称
、销售代表
姓名
,以及客户
名称
。根据客户名称按字母顺序 (A-Z) 排序。
SELECT r.name region, s.name rep, a.name account
FROM sales_reps s
JOIN region r
ON s.region_id = r.id
JOIN accounts a
ON a.sales_rep_id = s.id
WHERE r.name = 'Midwest'
ORDER BY a.name;
-
为每个
销售代表
对应的
区域
以及相关的
客户
创建一个表格,这次仅针对
Midwest
区域,并且销售代表的名字以
S
开头。最终表格应该包含三列:区域
名称
、销售代表
姓名
,以及客户
名称
。根据客户名称按字母顺序 (A-Z) 排序。
SELECT r.name region, s.name rep, a.name account
FROM sales_reps s
JOIN region r
ON s.region_id = r.id
JOIN accounts a
ON a.sales_rep_id = s.id
WHERE r.name = 'Midwest' AND s.name LIKE 'S%'
ORDER BY a.name;
-
为每个
销售代表
对应的
区域
以及相关的
客户
创建一个表格,这次仅针对
Midwest
区域,并且销售代表的姓以
K
开头。最终表格应该包含三列:区域
名称
、销售代表
姓名
,以及客户
名称
。根据客户名称按字母顺序 (A-Z) 排序。
SELECT r.name region, s.name rep, a.name account
FROM sales_reps s
JOIN region r
ON s.region_id = r.id
JOIN accounts a
ON a.sales_rep_id = s.id
WHERE r.name = 'Midwest' AND s.name LIKE '% K%'
ORDER BY a.name;
-
提供每个
订单
的每个区域的
名称
,以及客户
名称
和所支付的
单价
(total_amt_usd/total)。但是,只针对
标准订单数量
超过
100
的情况提供结果。最终表格应该包含三列:
区域名称
、
客户名称
和
单价
。为了避免除以 0 个订单,这里可以在分母上加上 0.01,即:(total_amt_usd/(total+0.01))。
SELECT r.name region, a.name account, o.total_amt_usd/(o.total + 0.01) unit_price
FROM region r
JOIN sales_reps s
ON s.region_id = r.id
JOIN accounts a
ON a.sales_rep_id = s.id
JOIN orders o
ON o.account_id = a.id
WHERE o.standard_qty > 100;
-
提供每个
订单
的每个区域的
名称
,以及客户
名称
和所支付的
单价
(total_amt_usd/total)。但是,只针对
标准订单数量
超过
100
且
广告纸数量
超过
50
的情况提供结果。最终表格应该包含三列:
区域名称
、
客户名称
和
单价
。按照最低的
单价
在最之前排序。为了避免除以 0 个订单,这里可以在分母上加上 0.01,即:(total_amt_usd/(total+0.01))。
SELECT r.name region, a.name account, o.total_amt_usd/(o.total + 0.01) unit_price
FROM region r
JOIN sales_reps s
ON s.region_id = r.id
JOIN accounts a
ON a.sales_rep_id = s.id
JOIN orders o
ON o.account_id = a.id
WHERE o.standard_qty > 100 AND o.poster_qty > 50
ORDER BY unit_price;
-
提供每个
订单
的每个区域的
名称
,以及客户
名称
和所支付的
单价
(total_amt_usd/total)。但是,只针对
标准订单数量
超过
100
且
广告纸数量
超过
50
的情况提供结果。最终表格应该包含三列:
区域名称
、
客户名称
和
单价
。按照最高的
单价
在最之前排序。为了避免除以 0 个订单,这里可以在分母上加上 0.01,即:(total_amt_usd/(total+0.01))。
SELECT r.name region, a.name account, o.total_amt_usd/(o.total + 0.01) unit_price
FROM region r
JOIN sales_reps s
ON s.region_id = r.id
JOIN accounts a
ON a.sales_rep_id = s.id
JOIN orders o
ON o.account_id = a.id
WHERE o.standard_qty > 100 AND o.poster_qty > 50
ORDER BY unit_price DESC;
-
account id
为
1001
的客户使用了哪些不同的
渠道
。最终表格应该包含 2 列:
客户名称
和不同的
渠道
。你可以尝试使用
SELECT DISTINCT
使结果仅显示唯一的值。
SELECT DISTINCT a.name, w.channel
FROM accounts a
JOIN web_events w
ON a.id = w.account_id
WHERE a.id = '1001';
-
找出发生在
2015
年的所有订单。最终表格应该包含 4 列:
occurred_at
、
account name
、
order total
和
order total_amt_usd
。
SELECT w.occurred_at, a.name, o.total, o.total_amt_usd
FROM accounts a
JOIN orders o
ON o.account_id = a.id
JOIN web_events w
ON a.id = w.account_id
WHERE w.occurred_at BETWEEN '01-01-2015' AND '01-01-2016'
ORDER BY w.occurred_at DESC;